package bt.basics.common.utils;

import org.apache.commons.lang3.StringUtils;

/**
 * 字符脱敏工具类
 */
public class StrDesensitizationUtil {
    /**
     * 字符脱敏
     * @param front  前面保留位数
     * @param center  需要脱敏的位数
     * @param rear  后面保留的位
     * @param data  待脱敏的数据
     * @return
     */
    public static String getDesensitization(int front,int center,int rear,String data){
        //脱敏筛选正则
        String data_blur_regex = "(\\d{"+front+"})\\d{"+center+"}(\\d{"+rear+"})";
        //脱敏替换正则
        StringBuffer data_blur_replace_regex = new StringBuffer();
        data_blur_replace_regex.append("$1");
        for(int i = 0;i<center;i++){
            data_blur_replace_regex.append("*");
        }
        data_blur_replace_regex.append("$2");
        //String data_blur_replace_regex = "$1****$2";
        return data.replaceAll(data_blur_regex,data_blur_replace_regex.toString());
    }


    /**
     * 字符脱敏
     * @param front  前面保留位数
     * @param center  需要脱敏的位数
     * @param data  待脱敏的数据
     * @return
     */
    public static String getSubstituteCharacter(int front,int center,String data){
       if(StringUtils.isEmpty(data)){
           return "";
       }
        //脱敏替换正则
        StringBuffer data_blur_replace_regex = new StringBuffer();
        for(int i = 0;i<center;i++){
            data_blur_replace_regex.append("*");
        }
        StringBuilder str = new StringBuilder(data);
        return str.replace(front,center+1,data_blur_replace_regex.toString()).toString();
    }

}
